#include <string.h>
#include <stdlib.h>
#include "jugadoresPlantillasLoad.h"

int jugadoresPlantillacount;

int loadJugadoresPlantillas(char const *filename,struct JugadoresPlantillaVars **data_ptr){
	FILE *ptr_file;///create FILE pointer
	ptr_file=fopen(filename,"r");///open file specified in *filename
	if(!ptr_file){
		return 1;
	}
	int maxlinelen;///used to allocate buffer length
	int numlines=getFileInfo(ptr_file,&maxlinelen);///used to allocate jugadoresJugadoresPlantillas array size
	jugadoresPlantillacount=numlines;
	struct JugadoresPlantillaVars *data;
	data=(struct JugadoresPlantillaVars*) calloc(numlines,sizeof(struct JugadoresPlantillaVars));///allocate jugadoresJugadoresPlantilla array
	char *buf=(char*) malloc(maxlinelen*sizeof(char));///allocate buffer size
	char *tmp=(char*) malloc(20*sizeof(char));

	for(int i=0;i<numlines;i++){
		fgets(buf,maxlinelen,ptr_file);///load a line to buffer
		sscanf(strtok(buf,"-"), "%d", &data[i].playerID);
		sscanf(strtok(NULL,"\n"), "%d", &data[i].plantillaID);
	}
	free(buf);
	fclose(ptr_file);
	*data_ptr=data;
	return 0;
}

int writeJugadoresPlantillas(char const *filename,struct JugadoresPlantillaVars *data){
	FILE *ptr_file;
	ptr_file=fopen(filename,"w");
	if(!ptr_file){
		return 1;
	}
	///loop through jugadoresJugadoresPlantillas
	for(int i=0;i<jugadoresPlantillacount;i++){
		///print a line
		fprintf(ptr_file,"%02d-%03d\n",data[i].playerID,data[i].plantillaID);
	}
	fclose(ptr_file);
	free(data);
	return 0;
}

void addJugadoresPlantilla(struct JugadoresPlantillaVars n,struct JugadoresPlantillaVars **data_ptr){
	///reallocate jugadoresPlantilla array size and increment jugadoresPlantillacount
	struct JugadoresPlantillaVars *data;
	data=(struct JugadoresPlantillaVars*) realloc(*data_ptr,++jugadoresPlantillacount *sizeof(struct JugadoresPlantillaVars));
	data[jugadoresPlantillacount-1]=n;
	*data_ptr=data;
}

void rmJugadoresPlantilla(int index,struct JugadoresPlantillaVars **data_ptr){
	struct JugadoresPlantillaVars *data=(struct JugadoresPlantillaVars*) calloc(jugadoresPlantillacount-1,sizeof(struct JugadoresPlantillaVars));///allocate new array with one less element
	if(index!=0){
		memcpy(data,*data_ptr,index*sizeof(struct JugadoresPlantillaVars));
	}
	//copy everything after index
	if(index < jugadoresPlantillacount){
		memcpy(data + index,*data_ptr + index + 1,(jugadoresPlantillacount - index - 1)*sizeof(struct JugadoresPlantillaVars));
	}
	jugadoresPlantillacount--;
	free(*data_ptr);
	*data_ptr=data;
}
